みなさんへの告知板


オンラインゲームからは離れました。これからはリアルょぅι゛ょで頑張ろうと思います


ミジンコゼミナール


ネットゲーム解析初心者向け講座、ミジンコゼミナール 開講!

多重起動、窓化の基礎をしらんやつは見ておけ。
読んでも理解できないやつは解析以前の問題だから文句いうな('A`)

ミジンコゼミナール:ネットゲーム解析講座一覧
1日目:入学/必要な教材 2日目:基本的なアセンブリ言語
3日目:Ollydbg の操作方法と演習 4日目:多重起動1(FindWindow)
5日目:多重起動2(CreateMutex) 6日目:多重起動3(EnumWindows、その他の方法)
7日目:ウィンドウについて
8日目:窓化(D8) 9日目:窓化(D9)
10日目:DLL について 11日目:何か作ってみよう
12日目:試験 13日目:プレゼント

2005年09月02日


Vig○l

友人が購読している雑誌にネットワーク上のパケットを覗くソフトが紹介
されていたらしい。

彼はこれを使ってみたところ、確かに使い心地はいいのだが制限が掛かって
いて途中でソフトが停止してしまう。と言ってきたんだ。

ソフト名は vig○l

以下はその友人のために解析した結果である。

004E08D0 〜 004E0968 はユーザー名を元に正規シリアル番号を生成する
ためのルーチン

004E096C 〜 004E09AE は登録時に入力するシリアル番号と正規シリアル
番号とを比較するルーチン。


004E08D0 /$ 55 PUSH EBP
004E08D1 |. 8BEC MOV EBP,ESP
004E08D3 |. 81C4 F8F7FFFF ADD ESP,-808
004E08D9 |. 8955 F8 MOV DWORD PTR SS:[EBP-8],EDX
004E08DC |. 8945 FC MOV DWORD PTR SS:[EBP-4],EAX
004E08DF |. FF75 FC PUSH DWORD PTR SS:[EBP-4] ; /<%s>
004E08E2 |. 68 7C956D00 PUSH Vigil.006D957C ; |Format = "%s
VIGIL

"
004E08E7 |. FF75 F8 PUSH DWORD PTR SS:[EBP-8] ; |s
004E08EA |. E8 CD7F1E00 CALL ; \wsprintfA
004E08EF |. 83C4 0C ADD ESP,0C
004E08F2 |. 8D8D F8F7FFFF LEA ECX,DWORD PTR SS:[EBP-808]
004E08F8 |. BA 89956D00 MOV EDX,Vigil.006D9589
004E08FD |. 8B45 F8 MOV EAX,DWORD PTR SS:[EBP-8]
004E0900 |. E8 1BAA1C00 CALL Vigil.006AB320
004E0905 |. 0FBE85 07F8FFF>MOVSX EAX,BYTE PTR SS:[EBP-7F9] ; |
004E090C |. 50 PUSH EAX ; |<%c>
004E090D |. 0FBE95 FAF7FFF>MOVSX EDX,BYTE PTR SS:[EBP-806] ; |
004E0914 |. 52 PUSH EDX ; |<%c>
004E0915 |. 0FBE8D 04F8FFF>MOVSX ECX,BYTE PTR SS:[EBP-7FC] ; |
004E091C |. 51 PUSH ECX ; |<%c>
004E091D |. 0FBE85 02F8FFF>MOVSX EAX,BYTE PTR SS:[EBP-7FE] ; |
004E0924 |. 50 PUSH EAX ; |<%c>
004E0925 |. 0FBE95 0BF8FFF>MOVSX EDX,BYTE PTR SS:[EBP-7F5] ; |
004E092C |. 52 PUSH EDX ; |<%c>
004E092D |. 0FBE8D 14F8FFF>MOVSX ECX,BYTE PTR SS:[EBP-7EC] ; |
004E0934 |. 51 PUSH ECX ; |<%c>
004E0935 |. 0FBE85 16F8FFF>MOVSX EAX,BYTE PTR SS:[EBP-7EA] ; |
004E093C |. 50 PUSH EAX ; |<%c>
004E093D |. 0FBE95 F9F7FFF>MOVSX EDX,BYTE PTR SS:[EBP-807] ; |
004E0944 |. 52 PUSH EDX ; |<%c>
004E0945 |. 0FBE8D 0DF8FFF>MOVSX ECX,BYTE PTR SS:[EBP-7F3] ; |
004E094C |. 51 PUSH ECX ; |<%c>
004E094D |. 0FBE85 FBF7FFF>MOVSX EAX,BYTE PTR SS:[EBP-805] ; |
004E0954 |. 50 PUSH EAX ; |<%c>
004E0955 |. 68 8D956D00 PUSH Vigil.006D958D ; |Format = "%c%c%c%c-%c%c%c%c-%c%c%c"
004E095A |. FF75 F8 PUSH DWORD PTR SS:[EBP-8] ; |s
004E095D |. E8 5A7F1E00 CALL ; \wsprintfA
004E0962 |. 83C4 30 ADD ESP,30
004E0965 |. 8BE5 MOV ESP,EBP
004E0967 |. 5D POP EBP
004E0968 \. C3 RETN
004E0969 90 NOP
004E096A 90 NOP
004E096B 90 NOP
004E096C /$ 55 PUSH EBP
004E096D |. 8BEC MOV EBP,ESP
004E096F |. 81C4 F4F7FFFF ADD ESP,-80C
004E0975 |. 894D F4 MOV DWORD PTR SS:[EBP-C],ECX ;
UIDを MOV

004E0978 |. 8955 F8 MOV DWORD PTR SS:[EBP-8],EDX ;
入力したPASSをMOV

004E097B |. 8945 FC MOV DWORD PTR SS:[EBP-4],EAX
004E097E |. 8D95 F4F7FFFF LEA EDX,DWORD PTR SS:[EBP-80C]
004E0984 |. 8B45 F8 MOV EAX,DWORD PTR SS:[EBP-8] ;
EAXにUIDを移動

004E0987 |. E8 44FFFFFF CALL Vigil.004E08D0 ;
checkルーチン 004E08D0 へ

004E098C |. 8D8D F4F7FFFF LEA ECX,DWORD PTR SS:[EBP-80C] ;
checkルーチン で生成した正規シリアル番号を ECX へ

004E0992 |. 51 PUSH ECX
004E0993 |. FF75 F4 PUSH DWORD PTR SS:[EBP-C]
004E0996 |. E8 D18B1D00 CALL Vigil.006B956C
004E099B |. 83C4 08 ADD ESP,8
004E099E |. 85C0 TEST EAX,EAX
004E09A0 |. 75 07 JNZ SHORT Vigil.004E09A9
004E09A2 |. B8 01000000 MOV EAX,1
004E09A7 |. EB 02 JMP SHORT Vigil.004E09AB
004E09A9 |> 33C0 XOR EAX,EAX
004E09AB |> 8BE5 MOV ESP,EBP
004E09AD |. 5D POP EBP
004E09AE \. C3 RETN



最終的に register の状態は以下となっていた。
上記の注釈にある通り ECX の値を確認していれば、正規シリアルが
入っているのを確認できる。

ECX 0012BDCC ASCII "4c57-fd26-247"



さて、自分の名前と解析したシリアル番号を登録画面に入れてみるか。




期待通りの結果になった、これでこの問題はクリアーだ。


この記事へのコメント
コメントを書く
お名前:

メールアドレス:

ホームページアドレス:

コメント:


この記事へのトラックバック
×

この広告は180日以上新しい記事の投稿がないブログに表示されております。